package pay.entity;


import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import pay.entity.vo.GameVo;

import java.math.BigDecimal;
import java.util.List;

@EqualsAndHashCode(callSuper = true)
@Data
@TableName("contest_item")
public class ContestItemEntity extends BaseEntity {
    private Integer id;
    /**
     * 赛项名称
     */
    @TableField("name")
    private String name;
    /**
     * 赛项副标题
     */
    private String subhead;
    /**
     * 关联赛事/活动ID
     */
    private Integer mainId;
    /**
     * 类型 1：赛事 2：平台活动 3：俱乐部活动
     */
    private Integer activityType;
    /**
     * 比赛类型  1：个人赛  2：团队赛  3：亲子赛
     */
    private Integer gameType;
    /**
     * 性别限制 0：仅女性  1：仅男性  2：不限制
     */
    private Integer limitSex;
    /**
     * 年龄最大限制
     */
    private Integer maxAge;
    /**
     * 年龄最小限制
     */
    private Integer minAge;
    /**
     * 赛项描述/赛道特点，富文本
     */
    private String details;
    /**
     * 所有赛项的集合 1,2,3,4,5
     */
    private String sportType;
    /**
     * 赛项关门时长，分钟计算
     */
    private Integer closureDuration;
    /**
     * 录取类型 1：按支付顺序  2：抽签确认
     */
    private Integer admissionMethod;
    /**
     * 备注
     */
    @TableField("`describe`")
    private String describe;
    /**
     * 赛道特征
     */
    private String feature;
    /**
     * 地图详情
     */
    private String amap;
    /**
     * 是否可以重复报名
     */
    @TableField("`repeatable`")
    private Integer repeatable;
    /**
     * 组别 5KM 10KM 15KM
     */
    private String onlyName;
    /**
     * 打卡顺序
     * 0 可乱序打卡
     * 1 按顺序打卡
     */
    private Integer isOrder;
    /**
     * 是否支持重赛
     * 0 不可重赛
     * 1 可重赛
     */
    private Integer canReplay;
    /**
     * 是否展示实时排名
     * 0 不展示
     * 1 展示
     */
    private Integer isRealTimeRanking;
    /**
     * 路书文件
     * 前缀拼接赛事图片路径
     */
    private String travelGuide;
    /**
     * 运动员编号的前缀
     */
    private String playerPrefix;
    /**
     * 运动员编号的长度
     */
    private Integer playerLength;
    /**
     * 蒙版类型
     * 1 常规
     * 2 收缩无计时
     * 3 收缩带计时
     */
    private Integer maskType;
    /**
     * 是否展示gps提示
     */
    private Integer showGps;
    /**
     * 参赛人员数量
     */
    private Integer playerNumber;
    /**
     * 最低团队成员人数
     */
    private Integer minPlayerNumber;
    /**
     * 退款规则对应id
     */
    private String refundRuleId;
    /**
     * 组别
     */
    @TableField(exist = false)
    private TeamEntity team;
    /**
     * 扩展
     */
    @TableField("`extended`")
    private String extended;
    /**
     * 路线长度
     * 公里数
     */
    private BigDecimal kilometres;
    /**
     * 累计爬升
     * 米
     */
    private Integer ascent;
    /**
     * 海拔高度
     * 米
     */
    private Integer altitude;
    /**
     * 线路标签
     * id用,间隔
     */
    private String labels;
    /**
     * 是否使用地图打卡功能
     * 0-不使用地图及打卡功能
     * 1-使用地图及打卡功能
     * 2-仅使用地图+参考点
     */
    private Integer checkType;
    /**
     * 团队男性人数限制
     */
    private Integer teamMaleCount;
    /**
     * 团队女性人数限制
     */
    private Integer teamFemaleCount;
    /**
     * 亲子赛儿童数量限制
     */
    private Integer teamChildrenCount;
    /**
     * 亲子赛家长数量限制
     */
    private Integer teamAdultCount;
    /**
     * 亲子赛儿童最大年龄限制
     */
    private Integer teamChildrenMaxAge;
    /**
     * 亲子赛儿童最小年龄限制
     */
    private Integer teamChildrenMinAge;
    /**
     * 排序权重
     */
    private Integer sortWeight;
    /**
     * 定价方式 1：固定价格 2：阶梯价格
     */
    private Integer pricingManner;
    /**
     * 提示信息
     */
    private String tips;
    /**
     * 是否支持反向打卡
     */
    private Integer canBackendCheck;
    /**
     * 难度等级提升
     */
    private Integer levelUp;
    /**
     * 是否扫描真实二维码打卡
     */
    private Integer isRealCode;

    @TableField(select = false)
    private List<GoodsEntity> goodsList;

    @TableField(select = false)
    private ContestItemUserEntity contestItemUser;

    @TableField(select = false)
    private OrdersEntity orders;

    @TableField(select = false)
    private GameVo authenticatedGame;

    @TableField(select = false)
    private List<ContestItemLabelEntity> contestItemLabelList;

    @TableField(select = false)
    private Integer isFace = 0;

    @TableField(select = false)
    private Integer isGps = 0;

    @TableField(select = false)
    private Integer isCode = 0;

    @TableField(select = false)
    private Integer completeUserCount;

    @TableField(select = false)
    private Integer pointCount;

    /**
     * 报名费
     */
    @TableField(select = false)
    private BigDecimal price;
    /**
     * 库存
     */
    @TableField(select = false)
    private Integer stock;
    @TableField(select = false)
    private Integer otherContestItemRegistration;

}
